/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.brain.cobranza.dto;

import com.brain.core.dto.ParametroDto;
import com.brain.core.dto.UbigeoDto;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.TableGenerator;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;
import javax.validation.constraints.Size;

/**
 *
 * @author Hvives
 */
@Entity
@Table(name = "TCOB_CLIENTE")
public class ClienteDto implements Serializable {

    private static final long serialVersionUID = 1L;
    // @Max(value=?)  @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
    @Id
    @GeneratedValue(strategy = GenerationType.TABLE, generator = "SEQ_TCOB_CLIENTE")
    @TableGenerator(name = "SEQ_TCOB_CLIENTE", table = "TCORE_ENTIDAD", pkColumnName = "NOMBRE", valueColumnName = "CORRELATIVO", pkColumnValue = "TCOB_CLIENTE", allocationSize = 1)
    private Long id;

    @Size(max = 20)
    @Column(name = "NUMERO_DOCUMENTO")
    private String numeroDocumento;
    
    @Size(max = 100)
    @Column(name = "NOMBRES")
    private String nombres;
    
    @Size(max = 50)
    @Column(name = "APELLIDO_PATERNO")
    private String apellidoPaterno;
    
    @Size(max = 50)
    @Column(name = "APELLIDO_MATERNO")
    private String apellidoMaterno;
    
    @Size(max = 20)
    @Column(name = "TELEFONO_DOMICILIAR")
    private String telefonoDomiciliar;
    
    @Size(max = 500)
    @Column(name = "DIRECCION_DOMICILIAR")
    private String direccionDomiciliar;
    
    @Size(max = 500)
    @Column(name = "REFERENCIA_DOMICILIAR")
    private String referenciaDomiciliar;
    
    @Size(max = 20)
    @Column(name = "TELEFONO_LABORAL")
    private String telefonoLaboral;
    
    @Size(max = 500)
    @Column(name = "DIRECCION_LABORAL")
    private String direccionLaboral;
    
    @Size(max = 500)
    @Column(name = "REFERENCIA_LABORAL")
    private String referenciaLaboral;
    
    @Size(max = 20)
    @Column(name = "TELEFONO_CELULAR1")
    private String telefonoCelular1;
    
    @Size(max = 20)
    @Column(name = "TELEFONO_CELULAR2")
    private String telefonoCelular2;
    
    @Size(max = 1)
    @Column(name = "SEXO")
    private String sexo;
    
    @Size(max = 2)
    @Column(name = "TELEFONO_CONTESTA")
    private String telefonoContesta;
    
    @JoinColumn(name = "TIPO_DOCUMENTO", referencedColumnName = "ID")
    @ManyToOne
    private ParametroDto tipoDocumentoDto;
    
    @JoinColumn(name = "UBIGEO", referencedColumnName = "ID")
    @ManyToOne
    private UbigeoDto ubigeoDto;
    
    @Column(name = "FECHA_NACIMIENTO")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaNacimiento;
    
    @Size(max = 11)
    @Column(name = "EMP_RUC")
    private String empRuc;
    
    @Size(max = 200)
    @Column(name = "EMP_RAZON_SOCIAL")
    private String empRazonSocial;
    
    @Size(max = 200)
    @Column(name = "EMP_DIRECCION")
    private String empDireccion;
    
    @JoinColumn(name = "EMP_UBIGEO", referencedColumnName = "ID")
    @ManyToOne
    private UbigeoDto empUbigeoDto;
    
    @Size(max = 20)
    @Column(name = "TEL_OTRO_1")
    private String telOtro1;
    
    @Size(max = 20)
    @Column(name = "TEL_OTRO_2")
    private String telOtro2;
    
    @Size(max = 20)
    @Column(name = "TEL_OTRO_3")
    private String telOtro3;
    
    @Column(name = "EDAD")
    private Long edad;
    
    @Transient
    private String nombresApellidos;
    
    @Transient
    private String tipoNumeroDocumento;
    
    @Transient
    private String sexoTexto;

    public ClienteDto() {
    }

    public ClienteDto(Long id) {
        this.id = id;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getNumeroDocumento() {
        return numeroDocumento;
    }

    public void setNumeroDocumento(String numeroDocumento) {
        this.numeroDocumento = numeroDocumento;
    }

    public String getNombres() {
        return nombres;
    }

    public void setNombres(String nombres) {
        this.nombres = nombres;
    }

    public String getApellidoPaterno() {
        return apellidoPaterno;
    }

    public void setApellidoPaterno(String apellidoPaterno) {
        this.apellidoPaterno = apellidoPaterno;
    }

    public String getApellidoMaterno() {
        return apellidoMaterno;
    }

    public void setApellidoMaterno(String apellidoMaterno) {
        this.apellidoMaterno = apellidoMaterno;
    }

    public String getTelefonoDomiciliar() {
        return telefonoDomiciliar;
    }

    public void setTelefonoDomiciliar(String telefonoDomiciliar) {
        this.telefonoDomiciliar = telefonoDomiciliar;
    }

    public String getDireccionDomiciliar() {
        return direccionDomiciliar;
    }

    public void setDireccionDomiciliar(String direccionDomiciliar) {
        this.direccionDomiciliar = direccionDomiciliar;
    }

    public String getReferenciaDomiciliar() {
        return referenciaDomiciliar;
    }

    public void setReferenciaDomiciliar(String referenciaDomiciliar) {
        this.referenciaDomiciliar = referenciaDomiciliar;
    }

    public String getTelefonoLaboral() {
        return telefonoLaboral;
    }

    public void setTelefonoLaboral(String telefonoLaboral) {
        this.telefonoLaboral = telefonoLaboral;
    }

    public String getDireccionLaboral() {
        return direccionLaboral;
    }

    public void setDireccionLaboral(String direccionLaboral) {
        this.direccionLaboral = direccionLaboral;
    }

    public String getReferenciaLaboral() {
        return referenciaLaboral;
    }

    public void setReferenciaLaboral(String referenciaLaboral) {
        this.referenciaLaboral = referenciaLaboral;
    }

    public String getTelefonoCelular1() {
        return telefonoCelular1;
    }

    public void setTelefonoCelular1(String telefonoCelular1) {
        this.telefonoCelular1 = telefonoCelular1;
    }

    public String getTelefonoCelular2() {
        return telefonoCelular2;
    }

    public void setTelefonoCelular2(String telefonoCelular2) {
        this.telefonoCelular2 = telefonoCelular2;
    }

    public String getSexo() {
        return sexo;
    }

    public void setSexo(String sexo) {
        this.sexo = sexo;
    }

    public String getTelefonoContesta() {
        return telefonoContesta;
    }

    public void setTelefonoContesta(String telefonoContesta) {
        this.telefonoContesta = telefonoContesta;
    }

    public ParametroDto getTipoDocumentoDto() {
        return tipoDocumentoDto;
    }

    public void setTipoDocumentoDto(ParametroDto tipoDocumentoDto) {
        this.tipoDocumentoDto = tipoDocumentoDto;
    }

    public UbigeoDto getUbigeoDto() {
        return ubigeoDto;
    }

    public void setUbigeoDto(UbigeoDto ubigeoDto) {
        this.ubigeoDto = ubigeoDto;
    }

    public Date getFechaNacimiento() {
        return fechaNacimiento;
    }

    public void setFechaNacimiento(Date fechaNacimiento) {
        this.fechaNacimiento = fechaNacimiento;
    }

    public String getEmpRuc() {
        return empRuc;
    }

    public void setEmpRuc(String empRuc) {
        this.empRuc = empRuc;
    }

    public String getEmpRazonSocial() {
        return empRazonSocial;
    }

    public void setEmpRazonSocial(String empRazonSocial) {
        this.empRazonSocial = empRazonSocial;
    }

    public String getEmpDireccion() {
        return empDireccion;
    }

    public void setEmpDireccion(String empDireccion) {
        this.empDireccion = empDireccion;
    }

    public String getNombresApellidos() {
        this.nombresApellidos = this.nombres + " " + this.apellidoPaterno + " " + this.apellidoMaterno;
        return this.nombresApellidos;
    }

    public void setNombresApellidos(String nombresApellidos) {
        this.nombresApellidos = nombresApellidos;
    }

    public String getTipoNumeroDocumento() {
        this.tipoNumeroDocumento = this.tipoDocumentoDto.getDescripcion() + " : " + this.numeroDocumento;
        return this.tipoNumeroDocumento;
    }

    public void setTipoNumeroDocumento(String tipoNumeroDocumento) {
        this.tipoNumeroDocumento = tipoNumeroDocumento;
    }        

    public String getTelOtro1() {
        return telOtro1;
    }

    public void setTelOtro1(String telOtro1) {
        this.telOtro1 = telOtro1;
    }

    public String getTelOtro2() {
        return telOtro2;
    }

    public void setTelOtro2(String telOtro2) {
        this.telOtro2 = telOtro2;
    }

    public String getTelOtro3() {
        return telOtro3;
    }

    public void setTelOtro3(String telOtro3) {
        this.telOtro3 = telOtro3;
    }

    public Long getEdad() {
        return edad;
    }

    public void setEdad(Long edad) {
        this.edad = edad;
    }

    public String getSexoTexto() {
        if (this.sexo.equals("M")) {
            this.sexoTexto = "MASCULINO";
        }
        else {
            this.sexoTexto = "FEMENINO";
        }
        
        return this.sexoTexto;
    }

    public void setSexoTexto(String sexoTexto) {
        this.sexoTexto = sexoTexto;
    }

    public UbigeoDto getEmpUbigeoDto() {
        return empUbigeoDto;
    }

    public void setEmpUbigeoDto(UbigeoDto empUbigeoDto) {
        this.empUbigeoDto = empUbigeoDto;
    }
    
    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof ClienteDto)) {
            return false;
        }
        ClienteDto other = (ClienteDto) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.brain.cobranza.dto.ClienteDto[ id=" + id + " ]";
    }
}
